import vnode from "./vnode";
import createElement from "./createElement";
import patchVnode from "./patchVnode";

export default function (oldVnode, newVnode) {
    // 第一步：判断传入的第一个参数，是DOM节点还是虚拟节点
    // 如果是DOM节点，就要包装成虚拟节点
    if (oldVnode.sel === "" || oldVnode.sel === undefined) {
        oldVnode = vnode(oldVnode.tagName.toLowerCase(), {}, [], undefined, oldVnode);
    }
    // 第二步：oldVnode,newVnode是否是同一个节点
    if (oldVnode.sel === newVnode.sel && oldVnode.key === newVnode.key) {
        patchVnode(newVnode, oldVnode);
    } else {
        console.log("不是同一节点");
        let newVnodeElm = createElement(newVnode);
        // 孤儿节点上树。让旧节点的父元素调用insertBefore方法，将
        // 孤儿节点插入到旧节点之前
        oldVnode.elm.parentNode.insertBefore(newVnodeElm, oldVnode.elm);
        // 删除旧节点
        oldVnode.elm.parentNode.removeChild(oldVnode.elm);
    }
}